<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // class Person { 
        //     getName = () => { }; 
        //     getName2() { }; 
        // } 
        // const person1 = new Person(); 
        // const person2 = new Person(); 
        // console.log(person1.getName === person2.getName); 
        // console.log(person1.getName2 === person2.getName2);

// 在这个示例中，person1和person2都是使用相同的Person类创建的实例。
// 对于箭头函数getName，箭头函数是根据定义它的词法上下文来确定其this值的，它是与类的实例无关的。
// 因此，无论如何，person1.getName和person2.getName都将引用相同的箭头函数。
// 而对于普通函数getName2，每个实例在内存中都有自己的函数副本。尽管两个实例的函数体是相同的，但它们实际上是两个不同的函数对象。
// 所以，person1.getName2和person2.getName2引用的是不同的函数对象。
// 因此，输出结果将是：
// true   // person1.getName 和 person2.getName 引用相同的箭头函数
// false  // person1.getName2 和 person2.getName2 引用不同的函数对象
// 复制代码
// class Person { getName = () => { }; getName2() { }; } 
// const person1 = new Person(); const person2 = new Person(); console.log(person1.getName === person2.getName); console.log(person1.getName2 === person2.getName2);
// 对不起，我之前的回答有误。在这个示例中，person1和person2都是使用相同的Person类创建的实例。
// 对于箭头函数getName和普通函数getName2，它们都是Person类的方法。当类的实例创建时，这些方法会被添加到实例的原型链上，因此每个实例都共享相同的方法。
// 所以无论是person1.getName还是person2.getName，它们引用的是相同的函数对象。同样，person1.getName2和person2.getName2也引用的是相同的函数对象。
// 因此，输出结果将是：
// true   // person1.getName 和 person2.getName 引用相同的函数对象
// true   // person1.getName2 和 person2.getName2 引用相同的函数对象
// 复制代码
// class Person { getName = () => { }; getName2() { }; } const person1 = new Person(); const person2 = new Person(); console.log(person1.getName === person2.getName); console.log(person1.getName2 === person2.getName2);
// 在该示例中，getName属性是一个箭头函数，而getName2是一个普通函数。这两种函数的行为和表达方式略有不同。
// 对于箭头函数来说，它始终是匿名函数，并且它的上下文始终是定义时所在的对象。在这种情况下，getName箭头函数的上下文是 Person 类的实例。因此，每个实例的 getName 箭头函数实际上是不同的函数对象。
// 而对于普通函数来说，它的行为与箭头函数不同。普通函数的上下文在运行时根据调用情况进行确定。在这种情况下，getName2 是一个普通函数，它将在每个实例的原型上共享相同的函数对象。
// 因此，输出结果将是：
// false   // person1.getName 和 person2.getName 引用不同的函数对象
// true    // person1.getName2 和 person2.getName2 引用相同的函数对象
// 复制代码


        var a; 
        for(a=0;a<5;a++){
            (function(a){
                setTimeout(function(){
                    console.log(a);
                })
            })(a)
        }
        console.log(88);
    </script>
</body>
</html>